package Gather.CollectionLearn.Traverse;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
/*
       Collection系列的三种通用遍历方式:
        1.迭代器遍历
        2.增加for遍历
        3.lanbda表达式遍历
 */
public class Lterators {
    public static void main(String[] args) {
        /*
        迭代器注意事项:
        1.报错NoSuchElementExcepion
        2.迭代器遍历完毕，指针不会复位
        3.循环中只能所有一次next方法
        4.迭代器遍历时，不能用集合的方法进行增加或删除
         */
        /*
        迭代器遍历相关的三个方法:
        Intertor<E> iterator    :获取一个迭代器遍历
        boolean hasNext()       :判断当前指向的位置是否有元素
        E next()                :获取当前指向的位置移动指针
         */
        //1.创建集合
        Collection<String> coll=new ArrayList<>();
        coll.add("aaa");
        coll.add("bbb");
        coll.add("ccc");
        coll.add("ddd");

        //2.获取迭代器对象
        //迭代器就好比是一个箭头，默认指向集合的0索引
        Iterator<String> it=coll.iterator();
        //3.利用循环获取元素
        while (it.hasNext()){//利用it.hasNext判断元素是否还存在元素，存在则继续打印
            //获取到元素并移动指针
            String str=it.next();
            //打印元素
            /*
            迭代器为一次性，如若需要二次打印需要重新创建迭代器对象
            打印完毕，指针不会归位
             */
            System.out.println(str);
        }


    }
}
